public class ThreadDemo2_1 {
    // 第二中方法中断线程
    public static void main(String[] args) {
        Thread thread = new Thread(()->{
            while(!Thread.currentThread().isInterrupted()) {
                //isInterrupted()这个为ture就是被终止，为false就是未被终止
                System.out.println("hello Thread");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        });
        thread.start();
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        thread.interrupt();//这个方法就是可以终止线程了，此处终止的是thread线程，（哪个线程调用就终止哪个线程）
        // 而且如果线程在sleep当中休眠 此时的interrupt会把thread线程唤醒，从sleep中唤醒
        // interrupt 会触发sleep内部的异常，导致sleep提前返回
        // 执行到这里面就是线程main会通知thread线程是否要终止

        //interrupt 会坐两件事：
        // 1.把线程内部的标志位（boolean）给设置成true
        // 2.如果线程正在进行sleep，就会触发异常，把sleep唤醒

        /* 但是sleep在唤醒的时候还会做一件事，把刚才设置的标志位，再设置回false（清空了标志位） 这就导致当sleep异常被catch完了之后循环
        还要继续进行 */

    }
}
